# 学生管理系统  数据库中存的数据 基本上是学生信息(学号 姓名 年龄 性别 家庭住址)


#   学号     姓名    年龄     性别            家庭住址
# 20240201 周冬雨    18       女      北京市朝阳区幸福里小区1304号
# 20240202 范冰冰    20       女      北京市朝阳区幸福里小区1304号
# 20240203 李冰冰    18       女      北京市朝阳区幸福里小区1304号
# 20240204 郭德纲    18       男      北京市朝阳区幸福里小区1304号
# 20240205 郭麒麟    18       男      北京市朝阳区幸福里小区1304号


# 列表 元祖 字典 集合      python提供的数据结构
# 数组 栈 队列 链表    通过python二次加工产生的数据结构

# student = {
#     "id":"20240201",
#     "name":"周冬雨",
#     "age":18,
#     "gender":False,
#     "address":"北京市朝阳区幸福里小区1304号"
# }
#
# student['x'] = 123
# print(student)

# 类
class Student:
    # 类变量(类属性) 对所有的实例是共用的!
    i = 0
    # 构造函数 一般给类所对应的实例设计属性
    # 实例变量(实例属性)
    def __init__(self,id,name,age,gender,address):
       self.id = id
       self.name = name
       self.age = age
       self.gender = gender
       self.address = address

    #方法
    def updateAge(self,newAge):
        self.age = newAge


# 类实例化(对类进行调用)
# 在类实例化时会对构造函数进行调用
# 每一次类实例化 都会 返回一个实例(对象)
# 这个实例(对象)就是构造函数中的self
# self的本质像一个字典
zdy = Student("20240201","周冬雨",18,False,"北京市朝阳区幸福里小区1304号")
fbb = Student("20240202","范冰冰",20,False,"北京市朝阳区幸福里小区1305号")

# 修改年龄
zdy.age = 78

zdy.updateAge(88)

#通过实例修改会创建同名实例变量（不会改变类变量本身）。
# zdy.i = 9
Student.i = 9

# 通过实例在访问类变量(类属性)
# print(zdy.i)
# print(fbb.i)


# 类变量
#     访问：可通过类名或实例访问。
#
#     修改：
#         通过类名修改会影响所有实例。
#         通过实例修改会创建同名实例变量（不会改变类变量本身）。
#
# 实例变量
#     访问/修改：只能通过实例对象操作，每个实例独立。
print(zdy.__dict__)